package Kernel;

import java.io.IOException;

public class Administrateur {

	private String login;
	private String password;
	private Serveur serveur;

	/* #### Constructeurs #### */

	/**
	 * Constructeur par défaut, fixe les paramètres à null.
	 */
	public Administrateur() {
		this.login = null;
		this.password = null;
		this.serveur = null;
	}

	/**
	 * Constructeur paramètré de la classe Administrateur
	 * 
	 * @param login
	 *            est le login de connexion de l'administrateur
	 * @param password
	 *            est le password de l'administrateur
	 * @param serveur
	 *            est le serveur sur lequel l'administrateur va se connecter
	 */
	public Administrateur(String login, String password, Serveur serveur) {
		this.login = login;
		this.password = password;
		this.serveur = serveur;
	}

	/* #### Methodes definies manuellement #### */

	/**
	 * Lancer la sauvegarde
	 * 
	 * @throws IOException
	 *             est levé si une erreur dans l'I/O du fichier survient.
	 * @throws ClassNotFoundException
	 *             peut être levée lors du chargement d'une classe depuis sa
	 *             référence (String)
	 */
	protected void sauvegarder() throws IOException, ClassNotFoundException {
		this.serveur.sauvegarder("");
	}

	/**
	 * Restaurer les données
	 * 
	 * @throws IOException
	 *             est levé si une erreur dans l'I/O du fichier survient.
	 * @throws ClassNotFoundException
	 *             peut être levée lors du chargement d'une classe depuis sa
	 *             référence (String)
	 */
	protected void charger() throws IOException, ClassNotFoundException {
		this.serveur.charger("");
	}

	/**
	 * Formatter l'objet pour la sauvegarde.
	 * 
	 * @return contient les informations sur l'objet , séparés par des ";"
	 */
	public String print() {
		return this.login + ";" + this.password + ";";
	}

	/**
	 * Ajoute un trajet dans les données du serveur
	 * 
	 * @param trajet
	 *            est le trajet à ajouter
	 */
	protected void ajouterTrajet(Trajet trajet) {
		this.serveur.ajouterTrajet(trajet);
	}

	/**
	 * Ajoute un véhicule dans les données du serveur
	 * 
	 * @param vehicule
	 *            est le véhicule à ajouter
	 */
	protected void ajouterVehicule(Vehicule vehicule) {
		this.serveur.ajouterVehicule(vehicule);
	}

	/**
	 * Ajoute une ville dans les données du serveur
	 * 
	 * @param ville
	 *            est la ville à ajouter
	 */
	protected void ajouterVille(Ville ville) {
		this.serveur.ajouterVille(ville);
	}

	/* #### Methodes Surchargees #### */

	@Override
	public String toString() {
		return "Administrateur :\nPseudo : " + this.login + "\nPassword :"
				+ this.password;
	}

	/* #### Mutateurs #### */

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getPassword() {
		return password;
	}

	protected void setPassword(String password) {
		this.password = password;
	}

	public Serveur getServeur() {
		return this.serveur;
	}

	public void setServeur(Serveur serveur) {
		this.serveur = serveur;
	}
}
